#include "app_common.h"
#include <stdlib.h> // NULL
#include <sys/time.h>
#include <stdio.h>
#include <string.h>

long long app_common_getcurtime_ms()
{
	struct timeval tv;
	gettimeofday(&tv, NULL);
	return (long long)tv.tv_sec * 1000 + tv.tv_usec / 1000;

}

int app_common_print_hex(char *hexstr,int len)
{
    for (int i = 0; i <len; i++)
    {
        printf("%02x ",hexstr[i]);
    }
    printf("\n");
	return 0;
}

/**
 * @brief 把字节数组转换成16进制字符串
 * @param data 字节数组
 * @param len 字节数组长度
 * @return 转换后的16进制字符串
 */
char *app_common_bytes2hexstr(char *data,int len)
{
	char *hexstr = (char *)malloc(len*2+1);

	for (int i = 0; i <len; i++)
	{
		sprintf(hexstr+i*2,"%02x",data[i]);
	}
	hexstr[len*2] = 0;
	return hexstr;

}

/**
 * @brief 把16进制字符串转换成字节数组
 * @param hexstr 16进制字符串
 * @param bytes_buff 字节数组缓冲区（已有空间）
 * @param buff_len 字节数组缓冲区长度
 * @return 转换后的字节数组长度
 */

int app_common_hexstr2bytes(char *hexstr, char *bytes_buff,int buff_len )
{
	int i = 0;
	int data_len = strlen(hexstr)/2;
	for(i=0;i<buff_len;i++)
	{   //2 : 一次取两个字节的长度  hh: 转为char  x : 来源为16进制
		sscanf(hexstr+i*2,"%2hhx",&bytes_buff[i]);
	}

	return data_len;

}